package com.eastfair.venueservice.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.eastfair.boot.request.PageParams;
import com.eastfair.boot.service.SuperService;
import com.eastfair.venueservice.entity.DepositWarning;

import java.util.List;

import com.eastfair.venueservice.entity.ServiceOrder;
import com.eastfair.venueservice.vo.*;
import com.eastfair.venueservice.dto.*;

/**
 * <p>
 * 业务接口
 * 押金预警
 * </p>
 *
 * @author linan
 * @date 2023-02-14
 */
public interface DepositWarningService extends SuperService<DepositWarning> {
    /**
     * do转vo
     *
     * @param model
     */
    DepositWarningVO doToVo(DepositWarning model);

    /**
     * do转vo
     *
     * @param modelList
     */
    List<DepositWarningVO> doToVos(List<DepositWarning> modelList);


    /**
     * 通用查询
     *
     * @param modelDTO DTO
     * @param ids      主键id集合
     * @return list
     */
    List<DepositWarning> list(DepositWarningDTO modelDTO, List<Long> ids);

    /**
     * 通用查询
     *
     * @param modelDTO DTO
     * @param ids      主键id集合
     * @return list
     */
    List<DepositWarning> listOfCache(DepositWarningDTO modelDTO, List<Long> ids);

    /**
     * 查询押金预警
     * @param query
     * @return
     */
    Page<DepositWarningVO> queryDepositWarning(PageParams<DepositWarningQuery> query);

    /**
     * 修改押金预警
     * @param dto
     * @return
     */
    Boolean updateDepositWarning(DepositWarningDTO dto);

    /**
     * 添加押金预警
     * @param dto
     * @return
     */
    Boolean addDepositWarning(DepositWarningDTO dto);

    /**
     * 异步告警
     * @param serviceOrder
     */
    void warning(ServiceOrder serviceOrder);

    /**
     * 异步告警
     * @param homeId
     * @param exhibitionManageId
     */
    void warning(Long homeId, Long exhibitionManageId);

    /**
     * 更新预警值
     * @param depositWarningDTO
     */
    void updateByExhibition(DepositWarningDTO depositWarningDTO);
}
